#! /bin/bash
### BEGIN INIT INFO
# Provides:          memcached
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Should-Start:      $local_fs
# Should-Stop:       $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description:    memcached - Memory caching daemon
# Description:        memcached - Memory caching daemon
### END INIT INFO
#
# memcached:    MemCached Daemon
#
# chkconfig:    - 90 25
# description:  MemCached Daemon
#

PORT=11211
USER=memcached
MAXCONN=1024
OPTIONS="-l 127.0.0.1"
DAEMON=/usr/local/memcached/bin/memcached

RETVAL=0
prog="/usr/local/memcached/bin/memcached"

start_instance() {
  echo -n $"Starting $prog ($1): "
  start-stop-daemon --start --quiet --pidfile /var/run/memcached/memcached.$1.pid --exec $DAEMON -- -d -p $PORT -u $USER  -m $2 -c $MAXCONN -P /var/run/memcached/memcached.$1.pid $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/memcached.$1
  let PORT="$PORT+1"
}

stop_instance() {
  echo -n $"Stopping $prog ($1): "
  start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/memcached/memcached.$1.pid --exec $DAEMON
  RETVAL=$?
  echo
  if [ $RETVAL -eq 0 ] ; then
    rm -f /var/lock/memcached.$1
    rm -f /var/run/memcached/memcached.$1.pid
  fi
}
start () {
  # insure that /var/run/memcached has proper permissions
  mkdir -p /var/run/memcached
  if [ "$(stat -c %U /var/run/memcached)" != "$USER" ]; then
    chown $USER /var/run/memcached
  fi

  start_instance default 256;
  #start_instance block 16;
  #start_instance content 128;
  #start_instance filter 128;
  #start_instance form 32;
  #start_instance menu 16;
  #start_instance page 8;
  #start_instance update 8;
  #start_instance views 8;
}
stop () {
  stop_instance default;
  #stop_instance block;
  #stop_instance content;
  #stop_instance filter;
  #stop_instance form;
  #stop_instance menu;
  #stop_instance page;
  #stop_instance update;
  #stop_instance views;
}

restart () {
  stop
  start
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status memcached
    ;;
  restart|reload|force-reload)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
    exit 1
esac

exit $?
